<!doctype html>
<html lang="zh-CN">
<head><meta name="generator" content="Hexo 3.8.0">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8">
    <meta name="baidu-site-verification" content="dIcXMeY8Ya">
    
    <title>Systrace for Linux-使用 systrace 分析 linux &amp; android 的调度问题 | OSKernelLAB</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
    <meta name="keywords" content="gatieme, 成坚, 内核, linux, kernel">
    <meta name="description" content="内核杂谈">

    
    <link rel="alternative" href="/atom.xml" title="OSKernelLAB" type="application/atom+xml">
    
    
    <link rel="icon" href="/favicon.ico">
    
    <link rel="stylesheet" href="/css/style.css?v=1615735433126">
    <!--[if lt IE 9]>
    <script src="/js/html5.js"></script>
    <![endif]-->
    
<script>
    var _hmt = _hmt || [];
    (function() {
        var hm = document.createElement("script");
        hm.src="https://hm.baidu.com/hm.js?1a8f9a67050c5fdb4c73cbbc00124bd8"
        var s = document.getElementsByTagName("script")[0];
        s.parentNode.insertBefore(hm, s);
    })();
</script>


</head>
</html>
<body class="home">
    <!--[if lt IE 9]>
    <div class="browsehappy">
        当前网页 <strong>不支持</strong>
        你正在使用的浏览器. 为了正常的访问, 请 <a href="http://browsehappy.com/">升级你的浏览器</a>.
    </div>
    <![endif]-->

    <!-- 博客头部 -->
    <header class="header">
    <section class="container header-main">
        <div class="logo">
            <a href="/">
                <div class="cover">
                    <span class="name">OSKernelLAB</span>
                    <span class="description">OS内核实验室</span>
                </div>
            </a>
        </div>
        <div class="dropnav iconfont icon-nav" id="JELON__btnDropNav"></div>
        <ul class="menu hidden" id="JELON__menu">
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/" title="首页" class="iconfont icon-home">&nbsp;首页</a>
            </li>
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/archives/" title="归档" class="iconfont icon-archives">&nbsp;归档</a>
            </li>
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/lab/" title="实验室" class="iconfont icon-archives">&nbsp;实验室</a>
            </li>
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/navigation/" title="网址导航" class="iconfont icon-archives">&nbsp;网址导航</a>
            </li>
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/about/" title="关于" class="iconfont icon-staff">&nbsp;关于</a>
            </li>
            
            <li rel="/2020/11/21/2020/1121-0001-Systrace_for_linux/index.html" class="item ">
                <a href="/comment/" title="留言" class="iconfont icon-comment">&nbsp;留言</a>
            </li>
            
        </ul>
        <div class="profile clearfix">
            <div class="feeds fl">
                
                
                <p class="links">
                    
                        <a href="https://github.com/gatieme" target="_blank">Github</a>
                        |
                    
                        <a href="https://github.com/gatieme/gatieme.github.io" target="_blank">Hosted by Github Pages</a>
                        
                    
                </p>
                <p class="sns">
                    
                        <a href="https://blog.csdn.net/gatieme" class="csdn" target="_blank"><b>■</b> CSDN 博客</a>
                    
                        <a href="https://www.facebook.com/gatieme" class="qqweibo" target="_blank"><b>■</b> Facebook</a>
                    
                    <a href="javascript: void(0);" class="wechat">
                        <b>■</b>
                        公众号
                        <span class="popover">
                            <img src="/img/wechat_mp.jpg" width="120" height="120" alt="我的微信订阅号">
                            <i class="arrow"></i>
                        </span>
                    </a>
                </p>
                
            </div>
            <div class="avatar fr">
                <img src="/img/gatieme.jpg" alt="avatar" title="Gatieme-(成坚)">
            </div>
        </div>
    </section>
</header>


    <!-- 博客正文 -->
    <div class="container body clearfix">
        <section class="content">
            <div class="content-main widget">
                <!-- 文章页 -->
<!-- 文章 -->
<article class="post article">
    <header class="text-center">
        <h3 class="post-title"><span>Systrace for Linux-使用 systrace 分析 linux &amp; android 的调度问题</span></h3>
    </header>
    <p class="post-meta text-center">
        gatieme 发表于
        <time datetime="2020-11-21T12:22:00.000Z">2020-11-21</time>
    </p>
    <div id="JELON__articlePostContent" class="post-content">
        <table>
<thead>
<tr>
<th>日期</th>
<th style="text-align:center">作者</th>
<th style="text-align:center">CSDN</th>
<th style="text-align:center">GitHub</th>
<th style="text-align:center">BLOG</th>
</tr>
</thead>
<tbody>
<tr>
<td>2020-11-21</td>
<td style="text-align:center"><a href="https://blog.csdn.net/gatieme" target="_blank" rel="noopener">gatieme</a></td>
<td style="text-align:center"><a href="https://kernel.blog.csdn.net/article/details/110296102" target="_blank" rel="noopener">Systrace for Linux-使用 systrace 分析 linux &amp; android 的调度问题</a></td>
<td style="text-align:center"><a href="https://github.com/gatieme/LDD-LinuxDeviceDrivers/tree/master/study/debug/tools/systrace" target="_blank" rel="noopener"><code>LDD-LinuxDeviceDrivers/study/debug/tools/systrace</code></a></td>
<td style="text-align:center"><a href="https://oskernellab.com/2020/11/21/2020/1121-0001-Systrace_for_linux">OSKernelLAB</a></td>
</tr>
</tbody>
</table>
<p><br></p>
<p>本作品采用<a rel="noopener" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可, 转载请注明出处, 谢谢合作</p>
<p><a rel="noopener" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"></a></p>
<p>因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 鄙人在此谢谢啦</p>
<p><strong>转载请务必注明出处, 谢谢, 不胜感激</strong></p>
<p><br></p>
<h1 id="1-问题来源"><a href="#1-问题来源" class="headerlink" title="1 问题来源"></a>1 问题来源</h1><hr>
<p>笔者在日常内核性能优化的工作中, 主要涉及 终端(Android) 和 服务器(Server) 和 嵌入式 (RTOS) 等多个场景, 在终端场景下做内核开发和调度优化的时候, 经常会使用 atrace、systrace 等工具, 在惊叹于 google 的技术能力, 也时长在想这些工具是否可以用于服务器以及嵌入式领域.</p>
<p>使用 systrace 可以抓取到 sched、irq 以及帧的信息, 帧的信息我们服务器和嵌入式领域肯定是不会有的, 但是 sched、irq 等信息, 对于服务器领域也同样有意义. 如果能够在这些场景使用 systrace, 对于我们性能调优是有重大意义的.</p>
<p>systrace 的一些信息如下图所示:</p>
<p>Systrace 报告的屏幕截图</p>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/chrome_tracing.png" alt="android_tracing.png"></p>
<h1 id="2-systrace-简介-amp-原理"><a href="#2-systrace-简介-amp-原理" class="headerlink" title="2 systrace 简介 &amp; 原理"></a>2 systrace 简介 &amp; 原理</h1><hr>
<p>Android 开发者官网中对 systrace(Android System Trace) 有<a href="https://developer.android.google.cn/studio/command-line/systrace" target="_blank" rel="noopener">专门的文档介绍</a>, 或者在进入到官网的首页后，按照 Android Developers &gt; Android Studio &gt; USER GUIDE &gt; Command line tools &gt; systrace的路径访问该文档.</p>
<p>systrace 的原理我们这里不啰嗦了, 可以网上自行搜索:</p>
<p>其主要工作就是使用了 linux kernel 的 ftrace 来完成的<br>1、systrace调用 atrace 抓取 Android 的 ftrace buffer 数据, atrace 会根据用户指定的参数, 使能 framework 层和 kernel 中对应的 trace events, 同时使能 ftrace.<br>2、systrace把 trace buffer 的数据和 prefix.html、suffix.html、systrace_trace_viewer.html 合成一个可供 chrome(Trace-Viewer) 直接解析的 <code>trace.html</code> 文件；<br>3、使用chrome浏览器打开 <code>trace.html</code> 就可以非常方便的以图形化的形式来查看和分析 <code>trace</code> 数据。背后是 <a href="https://google.github.io/trace-viewer/" target="_blank" rel="noopener"><code>Trace-Viewer</code> 的脚本</a> 在运行；</p>
<p>systrace 中除了解析 sched、irq 等原生 trace events 的信息, 还需要对帧信息做识别, 因此内核态和用户态的存储trace数据的按照一定格式来输出, 才能被 systrace 解析.</p>
<p>1、对内核 trace 信息不需要任何格式化处理, Trace-Viewer 会对内核原生的 trace format 格式的数据进行解析, 并绘制. 不过只支持几种类型的数据, 比如 sched_switch、sched_wakeup 等可以帮助绘制 CPU 的运行图谱, IRQ 等信息可以用来绘制各个 CPU 中断和软中断的图谱.</p>
<p>2、用户态(app/java framework/native)是通过使用 Trace 类来记录trace信息的, 得益于 ftrace 的 trace marker 机制, 允许用户态向内核的 ftrace buffer 中追加数据, 用户态只需要使用 /sys/kernel/debug/tracing/trace_marker” 接口, 就可以轻松的将格式化的 trace 数据写入到内核的 buffer 中. 因此 Android systrace 约定了一系列的 trace 格式, 这些 Trace 类按照约定的格式 mark 到 ftrace buffer 中, 从而能够被解析并绘制到 Trace-Viewer.</p>
<p>systrace trace event format 请参照 <a href="https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU" target="_blank" rel="noopener">systrace trace event format</a></p>
<h1 id="3-systrace-for-Linux-Desktop-Server"><a href="#3-systrace-for-Linux-Desktop-Server" class="headerlink" title="3 systrace for Linux Desktop/Server"></a>3 systrace for Linux Desktop/Server</h1><hr>
<h2 id="3-1-systrce-for-linux-简介"><a href="#3-1-systrce-for-linux-简介" class="headerlink" title="3.1 systrce for linux 简介"></a>3.1 systrce for linux 简介</h2><hr>
<p>分析了 systrace 的原理我们就知道, 如果要在服务器上使用 systrace 是可以的. 因为 chrome 支持解析原生内核的 sched、irq 的 trace, 那么我们直接使用这些来分析调度的性能, 基本是满足要求的.<br>那是否需要追加 trace_view 的头才能解析呢?</p>
<p>这个我最早也是以为是需要的, 但是后来尝试了下, 原生的 trace buffer 扔给 chrome://tracing 就可以解析. 但是如果你想要直接双击或者右键用 chrome 打开就能解析, 是需要追加 HTML 头的.  systrace 追加的 HTML 头中包含了一些标记, 告诉 chrome 这个 html 其实是一个 systrace 文件, 要用 <code>trace-viewer</code> 来解析.</p>
<p>那么我们现在我们要做的就只需要把我们需要的 trace event 打开, 然后把待测试完成后, 把 trace buffer dump 出来, 我们可以借助于 google systrace 工具来完成这个事情, 当然也可以选择手动写一些脚本来辅助我们工作.<br>我从 github 上找到了<a href="https://github.com/ganadist/systrace" target="_blank" rel="noopener">这个</a> (感谢 <a href="https://github.com/ganadist" target="_blank" rel="noopener">YOUNG HO CHA (aka ganachoco)/ganadist</a> 所做的工作, 他是我们的先行者, 没有他这个工作, 我可能会走很多弯路), 并做了一些改进, 我将最终的成品发布在 <a href="https://github.com/gatieme/systrace" target="_blank" rel="noopener">systrace for Linux Desktop/Server</a>, 并把他推荐给了同事, 借助这个工具, 为我们在 MYSQL 等场景, 提供了一些调优的输入.</p>
<p>github 地址如下:<br><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">github https:<span class="comment">//github.com/gatieme/systrace</span></span><br></pre></td></tr></table></figure></p>
<p>第一版做的比较简陋, 后期会不断更新和优化的.</p>
<h2 id="3-2-systrace-py-使用"><a href="#3-2-systrace-py-使用" class="headerlink" title="3.2 systrace.py 使用"></a>3.2 systrace.py 使用</h2><hr>
<p>systrace.py 脚本比较简单, 是我们提供的用来抓取 trace 的脚本, 它做的事情就是把我们制定的 tracepoint 打开, 然后抓取指定时间的 trace buffer 出来.</p>
<p>比如使用如下命令, 就可以抓取当前开始 1s 内调度和中断的 trace 信息</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"># -t <span class="number">1</span> 抓取 <span class="number">1</span>s</span><br><span class="line"># -v 表示输出详细信息</span><br><span class="line"># -e <span class="string">"sched,irq"</span> 表示抓取 调度 和 中断 的信息</span><br><span class="line">python systrace.py -t <span class="number">1</span> -v -e <span class="string">"sched,irq"</span></span><br></pre></td></tr></table></figure>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/run_systrace.png" alt="run_systrace.png"></p>
<p>在 chrome://tracing 中打开这个抓到的 trace 文件, 如下所示.</p>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/chrome_tracing.png" alt="chrome_tracing.png"></p>
<h2 id="3-3-fix-time-脚本使用"><a href="#3-3-fix-time-脚本使用" class="headerlink" title="3.3 fix_time 脚本使用"></a>3.3 fix_time 脚本使用</h2><hr>
<p>systrace 能解析并图形化显示的信息有限, 因此在实际开发过程中, 我们经常会手动再开一些 tracepoint, 这些 systrace 没法图形化展示, 但是却能帮助我们分析问题.<br>一般我们在 systrace 图上找到或者发现了一些问题之后, 再打开 systrace 日志, 找到出问题的时间点, 然后去分析详细的 trace 去探求原因.<br>但是这里有一些不便的地方, chrome systrace 上显示的时间是是以抓取的时间点为基准( 0MS )的相对时间, 而 trace 日志中的时间是系统的绝对时间.</p>
<p>trace-viewer 上显示的是日志中以抓取开始时间点为基准的相对时间戳</p>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/relative_time.png" alt="relative_time.png"></p>
<p>但是 trace 日志文本中显示的是系统的时间(绝对时间)戳</p>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/absolute_time.png" alt="absolute_time.png"></p>
<p>这样我们每次去找出问题的时间点的时候, 都需要再加上抓取时间点的, 然后找到出问题的实际的系统时间点. 这样每次总是很不方便.<br>因此我们提供了一个 perl 的脚本 fix_time.pl, 用来自动化完成这个工作.</p>
<p><img src="https://raw.githubusercontent.com/gatieme/systrace/master/doc/fix_time.png" alt="fix_time.png"></p>
<h2 id="3-4-直接使用脚本抓取日志"><a href="#3-4-直接使用脚本抓取日志" class="headerlink" title="3.4 直接使用脚本抓取日志"></a>3.4 直接使用脚本抓取日志</h2><hr>
<p>前面我们提到了, 原始的 trace 日志交给 trace_view 也是可以直接解析的.</p>
<blockquote>
<p>但是注意</p>
<p>原始的 trace 文件由于没有 HTML 头标记他是一个 systrace 格式的日志,<br>因此不能保存成 html 文件后, 直接双击通过 chrome 打开<br>必须主动通过 chrome://tracing 来加载才可以.</p>
</blockquote>
<p>最简单的抓取 trace 的脚本如下所示</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line">#!/bin/bash</span><br><span class="line"></span><br><span class="line">TRACING_PATH=/sys/kernel/debug/tracing</span><br><span class="line"></span><br><span class="line">get_systrace()</span><br><span class="line">&#123;</span><br><span class="line">        local sleepTime=$<span class="number">1</span></span><br><span class="line"></span><br><span class="line">        rm -rf trace.html</span><br><span class="line">        echo &gt; $TRACING_PATH/trace</span><br><span class="line"></span><br><span class="line">        echo <span class="number">1</span> &gt; $TRACING_PATH/events/sched/sched_wakeup/enable</span><br><span class="line">        echo <span class="number">1</span> &gt; $TRACING_PATH/events/sched/sched_wakeup_new/enable</span><br><span class="line">        echo <span class="number">1</span> &gt; $TRACING_PATH/events/sched/sched_switch/enable</span><br><span class="line">        echo <span class="number">1</span> &gt; $TRACING_PATH/events/irq/enable</span><br><span class="line"></span><br><span class="line">        echo <span class="number">1</span> &gt; $TRACING_PATH/tracing_on</span><br><span class="line"></span><br><span class="line">        sleep $sleepTime</span><br><span class="line"></span><br><span class="line">        echo <span class="number">0</span> &gt; $TRACING_PATH/tracing_on</span><br><span class="line">        echo <span class="number">0</span> &gt; $TRACING_PATH/events/enable</span><br><span class="line"></span><br><span class="line">        cat $TRACING_PATH/trace &gt; trace.html</span><br><span class="line">        echo &gt; $TRACING_PATH/trace</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">get_systrace $<span class="number">1</span></span><br></pre></td></tr></table></figure>
<p>该脚本同样集成到了 <a href="https://github.com/gatieme/systrace/blob/master/scripts/systrace.sh" target="_blank" rel="noopener">github 仓库</a>中, 可以使用如下命令直接抓取 10S 的日志信息.</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sh ./systrace.sh <span class="number">10</span></span><br></pre></td></tr></table></figure>
<h1 id="4-参考资料"><a href="#4-参考资料" class="headerlink" title="4 参考资料"></a>4 参考资料</h1><hr>
<p><a href="https://www.cnblogs.com/andy-songwei/p/10659564.html" target="_blank" rel="noopener">工利其器】必会工具之（三）systrace篇（1）官网翻译</a><br><a href="https://blog.csdn.net/pwl999/article/details/83510943" target="_blank" rel="noopener">systrace 解析</a></p>
<p><a href="https://google-developer-training.github.io/android-developer-advanced-course-practicals/unit-2-make-your-apps-fast-and-small/lesson-4-performance/4-1c-p-systrace-and-dumpsys/4-1c-p-systrace-and-dumpsys.html" target="_blank" rel="noopener">4.1C: Using the Systrace and dumpsys tools</a></p>
<p><a href="http://tinylab.org/ftrace-principle-and-practice" target="_blank" rel="noopener">Ftrace 实现原理与开发实践</a></p>
<p><br></p>
<ul>
<li><p>本作品/博文 ( <a href="http://blog.csdn.net/gatieme" target="_blank" rel="noopener">AderStep-紫夜阑珊-青伶巷草 Copyright ©2013-2017</a> ), 由 <a href="http://blog.csdn.net/gatieme" target="_blank" rel="noopener">成坚(gatieme)</a> 创作.</p>
</li>
<li><p>采用<a rel="noopener" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"></a><a rel="noopener" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可. 欢迎转载、使用、重新发布, 但务必保留文章署名<a href="http://blog.csdn.net/gatieme" target="_blank" rel="noopener">成坚gatieme</a> ( 包含链接: <a href="http://blog.csdn.net/gatieme" target="_blank" rel="noopener">http://blog.csdn.net/gatieme</a> ), 不得用于商业目的.</p>
</li>
<li><p>基于本文修改后的作品务必以相同的许可发布. 如有任何疑问，请与我联系.</p>
</li>
<li><p><strong>转载请务必注明出处, 谢谢, 不胜感激</strong><br><br></p>
</li>
</ul>

    </div>
    <p class="eof">-- EOF --</p>
    <p class="post-meta">
        <span class="post-cat">分类：
            <a class="cat-link" href="/categories/内核探秘/">内核探秘</a>
        </span>
        <span class="post-tags">
            标签：
            
    
        <a href="/tags/linux/" title="linux">linux</a> / 
    
        <a href="/tags/debug/" title="debug">debug</a> / 
    
        <a href="/tags/scheduler/" title="scheduler">scheduler</a>
    

        </span>
    </p>
</article>
<!-- 分享按钮 -->

  <div class="article-share clearfix text-center">
    <div class="share-area">
      <span class="share-txt">分享到：</span>
      <a href="javascript: window.open('http://service.weibo.com/share/share.php?url=' + encodeURIComponent(location.href) + '&title=' + document.title + '&language=zh_cn');" class="share-icon weibo"></a>
      <a href="javascript: alert('请复制链接到微信并发送');" class="share-icon wechat"></a>
      <a href="javascript: window.open('http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=' + encodeURIComponent(location.href) + '&title=' + document.title);" class="share-icon qqzone"></a>
      <a href="javascript: window.open('http://connect.qq.com/widget/shareqq/index.html?url=' + encodeURIComponent(location.href) + '&desc=Gatieme个人博客&title=' + document.title + '&callback=' + encodeURIComponent(location.href));" class="share-icon qq"></a>
      <a href="javascript: window.open('http://shuo.douban.com/!service/share?href=' + encodeURIComponent(location.href) + '&name=' + document.title + '&text=' + document.title);" class="share-icon douban"></a>
    </div>
  </div>



<!-- 上一篇/下一篇 -->

<div class="article-nav clearfix">
    
    <span class="prev fl">
        上一篇<br>
        <a href="/2020/11/21/2020/1121-0002-Perfetto_for_linux/">
            
                Perfetto for linux-使用 Perfetto 分析调度问题
            
        </a>
    </span>
    

    
    <span class="next fr">
        下一篇<br>
        <a href="/2020/10/06/2020/1006-0001-Linux_get_glibc_version/">
            
                Linux(Ubuntu/CentOS) 下查看 GLIBC 版本
            
        </a>
    </span>
    
</div>

<!-- 文章评论 -->

  <script src="/js/comment.js?v=1615735432604"></script>
  <div id="comments" class="comment">
    <!--
    <div class="sign-bar">
      GitHub 已登录!
      <span class="sign-link">登出</span>
    </div>
    <section class="box">
      <div class="com-avatar"><img src="/img/gatieme.jpg" alt="avatar"></div>
      <div class="com-text">
        <div class="main">
          <textarea class="text-area-edited show" placeholder="欢迎评论！"></textarea>
          <div class="text-area-preview"></div>
        </div>
        <div class="switch">
          <div class="switch-item on">编辑</div>
          <div class="switch-item">预览</div>
        </div>
        <div class="button">提交</div>
      </div>
    </section>
    <section class="tips">注：评论支持 markdown 语法！</section>
    <section class="list-wrap">
      <ul class="list">
        <li>
          <div class="user-avatar">
            <a href="/">
              <img src="/img/gatieme.jpg" alt="user-avatar">
            </a>
          </div>
          <div class="user-comment">
            <div class="user-comment-header">
              <span class="post-name">张德龙</span>
              <span class="post-time">2017年12月12日</span>
              <span class="like liked">已赞</span>
              <span class="like-num">2</span>
            </div>
            <div class="user-comment-body">333333</div>
          </div>
        </li>
        <li>
          <div class="user-avatar">
            <a href="/">
              <img src="/img/gatieme.jpg" alt="user-avatar">
            </a>
          </div>
          <div class="user-comment">
            <div class="user-comment-header">
              <span class="post-name">刘德华</span>
              <span class="post-time">2017年12月12日</span>
              <span class="like">点赞</span>
              <span class="like-num">2</span>
            </div>
            <div class="user-comment-body">vvvvv</div>
          </div>
        </li>
      </ul>
      <div class="page-nav">
        <a href="javascript: void(0);" class="item">1</a>
        <a href="javascript: void(0);" class="item">2</a>
        <a href="javascript: void(0);" class="item current">3</a>
      </div>
    </section>
    -->
  </div>
  <script>
  JELON.Comment({
    container: 'comments',
    label: '2020/1121-0001-Systrace_for_linux' || '2020/11/21/2020/1121-0001-Systrace_for_linux/',
    owner: 'gatieme',
    repo: 'blog_comments',
    clientId: 'cf796c25fcf4369b9295',
    clientSecret: 'c2ecfa50b9914a8fc9655ede7c9e6cf2ff84a70c'
  });
  </script>




            </div>
        </section>
        <!-- 侧栏部分 -->
<aside class="sidebar">
    
    <section class="widget">
        <h3 class="widget-hd"><strong>文章搜索</strong></h3>
        <div class="search-form">
  <form id="searchForm" method="GET" action="https://www.google.com/search" ectype="application/x-www-form-urlencoded" target="_blank" autocomplete="false" onsubmit="javascript: return false;">
    <input id="searchKeyword" type="text" class="form-control" placeholder="输入关键字搜索" autocomplete="false">
    <input id="searchKeywordHidden" type="hidden" name="q">
    <input id="searchButton" class="btn" type="submit" value="搜索">
  </form>
</div>

    </section>
    

    <section class="widget">
        <h3 class="widget-hd"><strong>文章分类</strong></h3>
        <!-- 文章分类 -->
<ul class="widget-bd">
    
    <li>
        <a href="/categories/linux/">linux</a>
        <span class="badge">(0)</span>
    </li>
    
    <li>
        <a href="/categories/hexo/">hexo</a>
        <span class="badge">(0)</span>
    </li>
    
    <li>
        <a href="/categories/qemu/">qemu</a>
        <span class="badge">(0)</span>
    </li>
    
    <li>
        <a href="/categories/debug/">debug</a>
        <span class="badge">(0)</span>
    </li>
    
    <li>
        <a href="/categories/编程珠玑/">编程珠玑</a>
        <span class="badge">(7)</span>
    </li>
    
    <li>
        <a href="/categories/技术积累/">技术积累</a>
        <span class="badge">(3)</span>
    </li>
    
    <li>
        <a href="/categories/内核探秘/">内核探秘</a>
        <span class="badge">(3)</span>
    </li>
    
</ul>
    </section>

    
    <section class="widget">
        <h3 class="widget-hd"><strong>热门标签</strong></h3>
        <!-- 文章标签 -->
<div class="widget-bd tag-wrap">
  
    <a class="tag-item" href="/tags/linux/" title="linux">linux (10)</a>
  
    <a class="tag-item" href="/tags/debug/" title="debug">debug (6)</a>
  
    <a class="tag-item" href="/tags/tools/" title="tools">tools (4)</a>
  
    <a class="tag-item" href="/tags/scheduler/" title="scheduler">scheduler (3)</a>
  
    <a class="tag-item" href="/tags/hexo/" title="hexo">hexo (2)</a>
  
    <a class="tag-item" href="/tags/blog/" title="blog">blog (2)</a>
  
    <a class="tag-item" href="/tags/qemu/" title="qemu">qemu (1)</a>
  
    <a class="tag-item" href="/tags/topdown/" title="topdown">topdown (1)</a>
  
    <a class="tag-item" href="/tags/kernel/" title="kernel">kernel (1)</a>
  
</div>
    </section>
    

    

    
    <!-- 友情链接 -->
    <section class="widget">
        <h3 class="widget-hd"><strong>友情链接</strong></h3>
        <!-- 文章分类 -->
<ul class="widget-bd">
    
        <li>
            <a href="https://blog.csdn.net/gatieme" target="_blank" title="我的 CSDN 博客">CSDN--紫夜阑珊-青伶巷草</a>
        </li>
    
        <li>
            <a href="https://xydh.fun/gatieme" target="_blank" title="我的炫猿导航主页">炫猿导航</a>
        </li>
    
        <li>
            <a href="https://jelon.info" target="_blank" title="Jelon 的博客">Jelon 的博客</a>
        </li>
    
</ul>
    </section>
    
</aside>
<!-- / 侧栏部分 -->
    </div>

    <!-- 博客底部 -->
    <footer class="footer">
    &copy;
    
        2014-2021
    

    <a href="/">紫夜阑珊-青伶巷草</a>
</footer>
<div class="back-to-top" id="JELON__backToTop" title="返回顶部">返回顶部</div>

    <!--博客js脚本 -->
    <!-- 这里放网站js脚本 -->
<script src="/js/main.js?v=1615735433135"></script>

</body>
</html>
